home *** CD-ROM | disk | FTP | other *** search
/ Games of Daze / Infomagic - Games of Daze (Summer 1995) (Disc 1 of 2).iso / x2ftp / msdos / libs / stk110 / stk.h < prev    next >
C/C++ Source or Header  |  1991-02-25  |  9KB  |  234 lines

  1. /**********************************************************************
  2. * stk.h
  3. * All prototypes and global typedefs for the sprite toolkit
  4. * concatenated into one include file. (The separate include 
  5. * files can be found from the stksrc archieve.)
  6. *
  7. * The files marked with S are selfcontained, and may be used
  8. * alone. The rest of the files need the definitions from the 
  9. * file spr.h. 
  10. *
  11. * "grtypes.h"    ** Misc type defs                      (S) **
  12. * "gr.h"         ** Graphics start, end, text I/O       (S) **
  13. * "mouse.h"      ** Mouse (INT 33) interface            (S) **
  14. * "spr.h"        ** Sprite init, create, display, erase (S) **
  15. * "spr_hit.h"    ** Sprite collision detection              **
  16. * "spr_fio.h"    ** Sprite file I/O                         **
  17. * "spr_anim.h"   ** Automatic spr animation & movement      **
  18. **********************************************************************
  19.                     This file is part of
  20.  
  21.           STK -- The sprite toolkit -- version 1.1
  22.  
  23.               Copyright (C) Jari Karjala 1991
  24.  
  25. The sprite toolkit (STK) is a FreeWare toolkit for creating high
  26. resolution sprite graphics with PCompatible hardware. This toolkit 
  27. is provided as is without any warranty or such thing. See the file
  28. COPYING for further information.
  29.  
  30. **********************************************************************
  31. **********************************************************************/
  32.  
  33.  
  34. #if     !defined(__GRTYPES_H_)
  35. #define __GRTYPES_H_
  36. #ifndef NULL
  37. #define NULL ((void*)0)
  38. #endif
  39. typedef unsigned char BYTE;
  40. typedef unsigned int  WORD;
  41. typedef BYTE *BITMAP;
  42. #endif
  43. #if     !defined(__GR_H_)
  44. #define __GR_H_
  45. /***** Variables *****/
  46. extern int gr_max_x;
  47. extern int gr_max_y;
  48. extern int gr_text_mode;
  49. #define GR_MODE_OR      (1<<0)      /* OR the text over previous graphics */
  50. #define GR_MODE_CLEAR   (1<<1)      /* Clear the backgroud before print  */
  51. #define GR_MODE_CLEAR_FAST   (1<<2) /* Clear the bg before print FAST  */
  52. extern unsigned char far *gr_font_addr;
  53. extern int gr_visualpage;
  54. extern int gr_activepage;
  55. extern char gr_keys[128];
  56. /***** Function prototypes *****/
  57. void gr_detect(int type, int *graphdriver, int *graphmode);
  58. #define GR_TYPE_ANY 0   /* Any mode will do */
  59. #define GR_TYPE_SPR 1   /* The best possible mode for the sprite toolkit */
  60. void gr_start(int *graphdriver, int *graphmode);
  61. void gr_end(void);
  62. void gr_setactivepage(int page);
  63. void gr_setvisualpage(int page);
  64. void gr_putch(char ch);
  65. void gr_puts(char *s);
  66. void gr_printf(char *s,...);
  67. #define gr_gotoxy(x, y) moveto(x*8, y*8)
  68. void gr_center_printf(int y, char *s,...);
  69. void gr_xy_printf(int x, int y, char *s,...);
  70. void gr_dual_center_printf(int y, char *s,...);
  71. void gr_dual_xy_printf(int x, int y, char *s,...);
  72. int gr_inkey(void);
  73. char *gr_gets(char *cpdest, int max_len);
  74. void gr_start_kbd_grab(void);
  75. void gr_end_kbd_grab(void);
  76. #define GR_KEY_ESC  1
  77. #define GR_KEY_1    2
  78. #define GR_KEY_2    3
  79. #define GR_KEY_3    4
  80. #define GR_KEY_4    5
  81. #define GR_KEY_5    6
  82. #define GR_KEY_6    7
  83. #define GR_KEY_7    8
  84. #define GR_KEY_8    9
  85. #define GR_KEY_9    10
  86. #define GR_KEY_0    11
  87. #define GR_KEY_TAB  15
  88. #define GR_KEY_Q    16
  89. #define GR_KEY_W    17
  90. #define GR_KEY_E    18
  91. #define GR_KEY_R    19 
  92. #define GR_KEY_T    20
  93. #define GR_KEY_Y    21
  94. #define GR_KEY_U    22
  95. #define GR_KEY_I    23
  96. #define GR_KEY_O    24
  97. #define GR_KEY_P    25
  98. #define GR_KEY_A    30
  99. #define GR_KEY_S    31
  100. #define GR_KEY_D    32
  101. #define GR_KEY_F    33
  102. #define GR_KEY_G    34
  103. #define GR_KEY_H    35
  104. #define GR_KEY_J    36
  105. #define GR_KEY_K    37
  106. #define GR_KEY_L    38
  107. #define GR_KEY_Z    44
  108. #define GR_KEY_X    45 
  109. #define GR_KEY_C    46
  110. #define GR_KEY_V    47
  111. #define GR_KEY_B    48
  112. #define GR_KEY_N    49
  113. #define GR_KEY_M    50
  114. #define GR_KEY_COMMA    51
  115. #define GR_KEY_DOT      52
  116. #define GR_KEY_SPACE    57
  117. #define GR_KEY_ARROW_UP     72
  118. #define GR_KEY_ARROW_DOWN   80
  119. #define GR_KEY_ARROW_LEFT   75
  120. #define GR_KEY_ARROW_RIGHT  77
  121. #endif
  122. #if     !defined(__MOUSE_H_)
  123. #define __MOUSE_H_
  124. #define BUTTON_LEFT         1
  125. #define BUTTON_RIGHT        2
  126. #define BUTTON_MS_MIDDLE    (BUTTON_RIGHT | BUTTON_LEFT)
  127. #define BUTTON_MIDDLE       4
  128. typedef unsigned int MOUSE_POINTER[2][16];
  129. #ifndef NO_EXTERNS
  130. extern MOUSE_POINTER mouse_pointer_arrow;    /* HotSpot 1,1   */
  131. extern MOUSE_POINTER mouse_pointer_hourglass;/* HotSpot 7,7  */
  132. extern MOUSE_POINTER mouse_pointer_cross;    /* HotSpot 7,7   */
  133. #else
  134. #undef NO_EXTERNS
  135. #endif
  136. /***** Function prototypes *****/
  137. int     mouse_initialize(void);
  138. int     mouse_driver_init(void);                                /**  0 **/
  139. void    mouse_show_pointer(void);                               /**  1 **/
  140. void    mouse_hide_pointer(void);                               /**  2 **/
  141. void    mouse_get_pointer_xy(int *x, int *y);                   /**  3 **/
  142. void    mouse_get_rel_pointer_xy(int *x, int *y);               /** 11 **/
  143. int     mouse_get_buttons(void);                                /**  3 **/
  144. int     mouse_get_presses(int buttons);                         /**  5 **/
  145. int     mouse_get_releases(int buttons);                        /**  6 **/
  146. void    mouse_set_pointer_xy(int x, int y);                     /**  4 **/
  147. void    mouse_set_sensitivity(int x, int y);                    /** 15 **/
  148. void    mouse_set_pointer_shape(int HotX, int HotY, MOUSE_POINTER shape);
  149. void    mouse_set_pointer_window(int a, int b, int c, int d);    /**  7 **/
  150. void    mouse_disable_pointer_window(int a, int b, int c, int d);/** 16 **/
  151. void    mouse_set_light_pen(int a);                         /** 13 & 14 **/
  152. #endif
  153. #ifndef __SPR_H_
  154. #define __SPR_H_
  155. extern int spr_pass_delay;
  156. #define spr_max_x gr_max_x
  157. #define spr_max_y gr_max_y
  158. #ifndef __SPRITE_
  159. typedef void *SPRITE;
  160. #endif
  161. void spr_initialize(int graphicsdriver);
  162. SPRITE spr_create(WORD w, WORD h, 
  163.                   BITMAP pic, BITMAP mask, 
  164.                   BYTE res, WORD ID);
  165. SPRITE spr_share(SPRITE spr, BYTE n);
  166. SPRITE spr_copy(SPRITE spr, WORD id);
  167. void spr_put(SPRITE spr, WORD x, WORD y);
  168. void spr_hide(SPRITE spr);
  169. void spr_delete(SPRITE spr);
  170. WORD spr_next_pass(void);
  171. void spr_regulate_speed(void);
  172. /***** Information retrieving functions *****/
  173. WORD spr_get_id(SPRITE spr);
  174. WORD spr_get_x(SPRITE spr);
  175. WORD spr_get_y(SPRITE spr);
  176. WORD spr_get_width(SPRITE spr);
  177. WORD spr_get_height(SPRITE spr);
  178. #endif
  179. #ifndef __SPR_HIT_H_
  180. #define __SPR_HIT_H_
  181. int spr_hit_with_point(SPRITE spr, WORD x, WORD y);
  182. int spr_hit(SPRITE spr1, SPRITE spr2);
  183. SPRITE spr_hit_first(SPRITE spr);
  184. SPRITE spr_hit_next(SPRITE spr);
  185. #endif
  186. #ifndef __SPR_FIO_H_
  187. #define __SPR_FIO_H_
  188. SPRITE spr_fio_read_smp(char *smpfile, BYTE res, WORD ID);
  189. #endif
  190. #ifndef __SPR_ANIM_H_
  191. #define __SPR_ANIM_H_
  192. /***** Datatypes *****/
  193. #ifndef __ANIM_SPRITE_
  194. typedef void *ANIM_SPRITE;
  195. #endif
  196. typedef struct _anim_spr_info {
  197.     int     x,y;                            /** location        **/
  198.     int     dx,dy;                          /** movement vector **/
  199.     int     lef, top, rig, bot;             /** limits          **/
  200.     WORD    frame, frame_delay, timeout;    /** time info       **/
  201.     WORD    id;     /** the user spesified id of current sprite **/
  202.     int     w,h;                            /** width&height    **/
  203. } ANIM_SPR_INFO;
  204. /***** Literal defines *****/
  205. #define SPR_ANIM_FX_ALL         (0x0F) /** all fx       **/
  206. #define SPR_ANIM_FX_TIMEOUT     (1<<0) /** timeout      **/
  207. #define SPR_ANIM_FX_HIT_X_LIMIT (1<<1) /** hit x limit  **/
  208. #define SPR_ANIM_FX_HIT_Y_LIMIT (1<<2) /** hit y limit  **/
  209. #define SPR_ANIM_FX_HIT_SPRITE  (1<<3) /** hit other spr**/
  210. #define SPR_ANIM_FX_RET_NOTHING (0)     /** continue normally       **/
  211. #define SPR_ANIM_FX_RET_RE_PUT  (1)     /** put the sprite again    **/
  212. #define SPR_ANIM_FX_RET_STOP    (2)     /** stop the animation      **/
  213. #define SPR_ANIM_FX_RET_DELETE  (3)     /** delete the anim.sprite  **/
  214. #define SPR_ANIM_FX_RET_DESTROY (4)     /** destroy the anim.sprite **/
  215. /***** Function prototypes *****/
  216. ANIM_SPRITE spr_anim_create(WORD count, ...);
  217. void spr_anim_start(ANIM_SPRITE aspr);
  218. void spr_anim_stop(ANIM_SPRITE aspr);
  219. void spr_anim_delete(ANIM_SPRITE aspr);
  220. void spr_anim_destroy(ANIM_SPRITE aspr);
  221. WORD spr_anim_next_pass(void);
  222. ANIM_SPR_INFO *spr_anim_get_info(ANIM_SPRITE aspr);
  223. void spr_anim_set_location(ANIM_SPRITE aspr, WORD x, WORD y);
  224. void spr_anim_set_vector(ANIM_SPRITE aspr, int dx, int dy);
  225. void spr_anim_set_limits(ANIM_SPRITE aspr,
  226.                          WORD lef, WORD top, WORD rig, WORD bot);
  227. void spr_anim_set_time(ANIM_SPRITE aspr,
  228.                        int frame, int frame_delay, int timeout);
  229. void spr_anim_set_fx_handler(ANIM_SPRITE aspr, 
  230.                              WORD fx_mask, 
  231.                              WORD (fx_handler)(ANIM_SPRITE,WORD,SPRITE));
  232. #endif
  233.